export type ConfigJsonType = {
  /** header中的logo */
  logo?: string;
  /** 浏览器标签中的logo */
  logoMeta?: string;
  /** 域名前缀，如：aokh5.com的aokh5 */
  siteName?: string;
  /**
   * 是否开启广告位
   * @default false
   */
  isExamine?: boolean;
  /** theme.json文件的主题id */
  themeId?: number;
  /** 主题json数据 */
  themeJson?: ThemeJsonType;
  /** about.json文件的协议id */
  aboutId?: number;
  /** 分类id */
  categoryId?: number;
  /** 协议json */
  aboutJson?: AboutJson;
  /** game.json文件的游戏id列表 */
  gameIds?: number[];
  /** 所有游戏协议列表 */
  allGameJson?: GameJson[];
  /** 取gameJson中字段img_token的开始和结束字符作为图片的后缀 */
  iconKey?: IconKeyType;
  /** GAM账户 */
  gamNo?: string;
  /** adsense账户 */
  adsenseNo?: string;
  /** adsense广告配置 */
  adsConfig?: AdsenseConfigType;
  /** GAM广告配置 */
  gamConfig?: GamConfigType;
  /** 谷歌GA埋点分析 */
  GAConfig?: GAConfigType;
  /** 其它字段 */
  [key: string]: any;
};

export type TrackEventType = {
  /** 事件名称 */
  eventName: string;
  /** 事件参数 */
  params?: any;
};

export type GAConfigType = {
  GAId?: string;
};

export type AdsenseConfigType = {
  /** 是否关闭广告 */
  close?: boolean;
  /** adsense广告配置 */
  adsenseClient?: string;
  /** adsense广告配置 */
  adsenseSlot?: string;
  /** 游戏详情页 Play Now 按钮下的广告 */
  gameDetailPlayNow?: string;
  /** 游戏详情页游戏分类上的广告 */
  gameDetailGameCategories?: string;
  /** 搜索页热门搜索下的广告 */
  searchBanner?: string;
};

export type GamConfigType = {
  close: false;
  /** GAM广告id */
  gamId: string;
  /** GAM广告尺寸 */
  gamSize?: googletag.GeneralSize;
  /** 游戏详情页 Play Now 按钮下的广告 */
  detailDisplay1?: string;
  /** 游戏详情页游戏分类上的广告 */
  detailDisplay2?: string;
  /** 搜索页热门搜索下的广告 */
  searchDisplay1?: string;
  /** 游戏分类页分类列表中穿插的广告 */
  categoryDisplayList?: string[];
  /** 游戏分类详情页游戏列表中穿插的广告 */
  cateDetailDisplayList?: string[];
  /** Play试玩页面点击Play Now按钮激励广告 */
  playMRV?: string;
  /** 用户在网页内任何页面切换时，穿插展示的插屏广告 */
  interstitial?: string;
  /** 网页内，悬停在各个页面的锚定广告 */
  anchor?: {
    slot: string;
    /** 悬停的位置 */
    position: AdPositionEnum;
  };
};

export type IconKeyType = {
  /** 开始截取位置 */
  start: number;
  /** 截取长度 */
  length: number;
};

export type ThemeJsonType = {
  /** 主键id */
  id?: number;
  /** 背景色 */
  background?: string;
  /** 十六进制颜色 */
  element?: string;
};

export type AboutJson = {
  /** 主键id */
  id?: number;
  /** 协议内容 */
  content?: string;
};

export type GameJson = {
  /** 主键id */
  id?: number;
  /** 游戏名称 */
  name?: string;
  /** 游戏简介 */
  des?: string;
  /** 游戏类型 */
  type?: string[];
  /** 用于生成游戏图标的token */
  img_token?: string;
  /** 游戏图标icon */
  icon?: string;
  /** 游戏第三方链接 */
  game?: string;
  /** 游戏的一些tag */
  tag?: GameTag;
};

export type CategoryType = {
  /** 分类主键id */
  id: number;
  /** 分类名称列表 */
  categoryItems: CategoryItemType[];
};

export type CategoryItemType = {
  /** 具体分类的id */
  categoryId: number;
  /** 具体分类的名称 */
  categoryName: string;
  /** 具体分类图标 */
  categoryIcon: string;
  /** 具体分类类型，主要用于点击分类后进入分类详情页后过滤数据 */
  categoryType: string;
};

export type GameTag = {
  /** 爱心的数量 */
  likes?: string;
  /** 喜欢的数量 */
  favorites?: string;
};

export type ImgSrcType = {
  v4Pre: string;
  siteName: string;
  imgNext: string;
};

export type TrackAutoAdType = {
  /** 是否渲染成功 */
  isEmpty?: boolean;
  /** 渲染的广告slot */
  slot?: string;
};

export type ResponseGlobalType<DTO> = {
  /** 返回的类型 */
  data: DTO;
};

export type GetHrefType = {
  /**
   * 原始的需要a标签跳转的链接
   * @description /categoryDetail?categoryType=${smallItem.categoryType}
   */
  hrefSource: string;
  /**
   * 获取的广告的链接参数
   * @description channel=7700495579&pid=D24225RC77U916NISU00&network=tiktok
   */
  hrefAd?: string;
};

export type GetSrcType = {
  /** 图片链接 */
  src?: string;
  /** 是否为动态拼接图片，也就是无http打头的 */
  isAutoImg?: boolean;
};

export type FuseSearchType = {
  /** 被模糊查询的数组 */
  list: any[];
  /** 被模糊匹配的字段数组 */
  keys: string[];
  /** 搜索字段 */
  value: string;
};

export type SearchGameJsonType = {
  /** 被匹配的所有的数据 */
  allGameJson?: GameJson[];
  /** 模糊查询的数据 */
  searchValue?: string;
};

export type GameDataSourceType = {
  /** 域名 */
  hostName: HostEnum;
  /** 游戏列表 */
  gameJson: GameJson[];
  /** 配置文件 */
  configJson: ConfigJsonType;
};

export type NodeCpuType = {
  /** 内存已经被使用量 */
  memory: string;
  /** CPU使用率 */
  cpu: string;
};
